package com.ride.dao;

import java.util.List;

import com.ride.model.Operator;

/**
 * Interface zum Zugriff auf Benutzerdaten.
 *
 * @version $LastChangedRevision: 16 $
 *          <p/>
 *          $LastChangedBy: marcel.menze@gmail.com $
 *          <p/>
 *          $LastChangedDate: 2011-04-05 12:34:26 +0000 (Tue, 05 Apr 2011) $
 */
public interface UserDao {

    /**
     * Erzeugt einen neuen Benutzer
     *
     * @param operator Benutzer
     */
    void persist(Operator operator);

    /**
     * Ermittelt eine Adresse anhand der ID
     *
     * @param id ID
     * @return Benutzer
     */
    Operator findById(Long id);

    /**
     * Aktaulisiert einen vorhandenen Benutzer.
     *
     * @param operator Benutzer
     */
    void update(Operator operator);

    /**
     * Löscht einen Benutzer.
     *
     * @param operator Benutzer
     */
    void delete(Operator operator);


    /**
     * Ermittelt einen Benutzer anhand des Benutzernamens.
     *
     * @param username Benutzername
     * @return Benutzer
     */
    Operator findByUsername(String username);

    /**
     * Ermittelt alle vorhandenen Benutzer.
     *
     * @return Liste mit Benutzern.
     */
    List<Operator> findAllUsers();

}
